#ifndef DEVICESIZETABLE_H
#define DEVICESIZETABLE_H

/**
*本地存储控件大小控件
* 1 可自动加载本地存储设备的总容量/已用容量
* 2 进度条显示已用容量
* 3 支持所有操作系统
* 4 增加U盘或SD卡到达提示
*/

#include <QTableWidget>
class QProcess;


class DeviceSizeTable : public QTableWidget
{
    Q_OBJECT
    Q_PROPERTY(QColor bgColor READ getBgColor WRITE setBgColor)
    Q_PROPERTY(QColor chunkColor1 READ getChunkColor1 WRITE setChunkColor1)
    //Q_PROPERTY(QColor chunkColor2 READ getChunkColor2 WRITE setChunkColor2)
    //Q_PROPERTY(QColor chunkColor3 READ getChunkColor3 WRITE setChunkColor3)
    Q_PROPERTY(QColor textColor1 READ getTextColor1 WRITE setTextColor1)
    //Q_PROPERTY(QColor textColor2 READ getTextColor2 WRITE setTextColor2)
    //Q_PROPERTY(QColor textColor3 READ getTextColor3 WRITE setTextColor3)


public:
    explicit DeviceSizeTable(QWidget *parent = 0);
    ~DeviceSizeTable();

private:
    QProcess *process;      //执行命令进程

    QColor bgColor;         //背景颜色
    QColor chunkColor1;     //进度颜色1
    QColor chunkColor2;     //进度颜色2
    QColor chunkColor3;     //进度颜色3
    QColor textColor1;      //文字颜色1
    QColor textColor2;
    QColor textColor3;

private slots:
    void readData();
    void insertSize(const QString &name,const QString &use,const QString &free,
                    const QString &all,int percent);
public:
    QColor getBgColor() const;
    QColor getChunkColor1() const;
    QColor getTextColor1() const;

    QSize sizeHint() const;
    QSize minimumSizeHint() const;

public Q_SLOTS:
    //载入容量
    void loadDiskMonitor();
    void load();
    //载入用户监视
    void loadUserMonitor();
    //清除数据
    void clearData();

    //设置背景颜色
    void setBgColor(const QColor &bgColor);

    //设置进度颜色
    void setChunkColor1(const QColor &chunkColor1);

    //设置文字颜色
    void setTextColor1(const QColor &textColor1);

Q_SIGNALS:
    void sdcardReceive(const QString &sdcardName);
    void udiskReceive(const QString &udiskName);
};

#endif // DEVICESIZETABLE_H
